package com.xlh.dao.course.ext;

import com.xlh.dto.course.CourseBasicDTO;
import com.xlh.dto.course.CourseDTO;
import com.xlh.dto.course.SkillDTO;
import com.xlh.pojo.course.Course;
import com.xlh.pojo.course.SkillNotes;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface CourseMapperExt {

    /**
     * 获取课程信息
     *
     * @param courseIds      课程id集合
     * @param ownCourse      是否是自己的课程
     * @param preseted       是否预置
     * @param status         课程状态
     * @param names          课程名称
     * @param courseBasicIds 课程基本id集合
     * @return
     */
    List<CourseBasicDTO> getCourse(
            @Param("courseIds") List<Long> courseIds, @Param("ownCourse") Boolean ownCourse,
            @Param("preseted") Boolean preseted, @Param("status") Integer status,
            @Param("names") List<String> names, @Param("courseBasicIds") List<Long> courseBasicIds);

    /**
     * 获取学生所在的班级id集合，获取学生有关联的课程
     *
     * @param classIds 班级id集合
     * @return
     */
    List<CourseDTO> listRelationCourseForStudent(@Param("classIds") List<Long> classIds);

    /**
     * 获取已共享的课程
     *
     * @param statusList 状态集合
     * @return
     */
    List<CourseDTO> listSharedCourse(@Param("statusList") List<Integer> statusList);

    /**
     * 根据状态及预置状态获取所有课程
     *
     * @param statusList 状态集合
     * @param preseted   是否预置
     * @param ownCourse  自己课程
     * @param userIds    用户id集合
     * @param courseIds  课程id集合
     * @return
     */
    List<CourseDTO> listCourse(@Param("statusList") List<Integer> statusList, @Param("preseted") Boolean preseted,
                               @Param("ownCourse") Boolean ownCourse, @Param("userIds") List<Long> userIds,
                               @Param("courseIds") List<Long> courseIds);

    /**
     * 根据课程id，获取所有教师需要引用这门课程的信息
     *
     * @param courseIds 课程id集合
     * @return
     */
    List<Course> queryCourses(@Param("courseIds") List<Long> courseIds);

    /**
     * 根据教师id获取课程信息
     *
     * @param userId   教师id
     * @param courseId 课程id
     * @return
     */
    List<CourseDTO> queryCoursesAndCourseTeacher(@Param("userId") Long userId, @Param("courseId") Long courseId);

    /**
     * 插入技能信息
     *
     * @param skillDTOS
     * @return
     */
    Integer insertSkill(@Param("SkillNotes") SkillNotes SkillNotes);
    /**
     * 插入技能信息
     *
     * @param skillDTOS
     * @return
     */
//    int insertSkillnew(SkillNotes SkillNotes);


    /**
     * 修改技能信息
     *
     * @param skillDTOS
     * @return
     */
    int updateSkill(@Param("name") String name ,@Param("id") Integer id,@Param("falg") Integer falg);

    void updateSkillall(@Param("SkillNotes") SkillNotes SkillNotes);
    /**
     * 查询技能信息
     *
     * @param skillDTOS
     * @return
     */
    List<SkillDTO> querySkill(@Param("parentId") Integer parentId, @Param("level") Integer level, @Param("name") String name, @Param("key") String key);

    SkillNotes querySkillById(@Param("parentId") Integer parentId);

    List<Map<String,Object>>querySkillCourse(@Param("userid") Long userid, @Param("name") String name);

    List<SkillNotes> getChildLists(@Param("id") Integer id);

    List<SkillNotes> getChildListsnew();

    void deleteSkill(@Param("ids") List<Integer> ids);

    List<SkillNotes> querySkillCourseInfo();

    List<Map<String, Object>> querySkillCourseInfonew(@Param("userid") Long userid);
}